/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package framework.parts;

import framework.data.Cidade;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Darlan
 */
public class CidadeTable extends JTable
{
    private List<Cidade> cidades;
    
    private enum Columns
    {
        ID( "Código" )
        {
            @Override
            public Object getValue( Cidade u )
            {
                return u.getCodigo();
            }
        },
        NOME( "Nome" )
        {
            @Override
            public Object getValue( Cidade u )
            {
                return u.getNome();
            }
        },
        ESTADO( "Estado/País" )
        {
            @Override
            public Object getValue( Cidade u )
            {
                return u.getEstado() + "/" + u.getPais();
            }
        };
        
        private String name;
        
        private Columns( String name )
        {
            this.name = name;
        }
        
        /**
         * 
         * @return 
         */
        public String getName()
        {
            return name;
        }
        
        public abstract Object getValue( Cidade u );
    }

    /**
     * 
     */
    public CidadeTable()
    {
    }

    /**
     * 
     * @return 
     */
    public List<Cidade> getCidades()
    {
        return cidades;
    }

    /**
     * 
     * @param pessoas 
     */
    public void setCidades( List<Cidade> pessoas )
    {
        this.cidades = pessoas;
        
        refreshContent();
    }
    
    /**
     * 
     * @return 
     */
    public Cidade getSelectedCidade()
    {
        int selected = getSelectedRow();
        Cidade p = null;
        
        if ( selected >= 0 )
        {
            p = cidades.get( selected );
        }
        
        return p;
    }
    
    /**
     * 
     */
    public void refreshContent()
    {
        this.setModel( new UsuarioTableModel() );
    }
    
    /**
     * 
     */
    private class UsuarioTableModel extends DefaultTableModel
    {
        @Override
        public boolean isCellEditable( int row, int column )
        {
            return false;
        }

        @Override
        public int getColumnCount()
        {
            return Columns.values().length;
        }

        @Override
        public String getColumnName(int column)
        {
            return Columns.values()[column].getName();
        }
    
        @Override
        public Object getValueAt( int row, int column )
        {
            return Columns.values()[ column ].getValue( cidades.get( row ) );
        }

        @Override
        public int getRowCount()
        {
            return cidades.size();
        }

        @Override
        public Class<?> getColumnClass( int columnIndex )
        {
            return String.class;
        }
    }
}
